/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package incidencias;

import java.io.*;
import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.*;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.BaseColor;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 *
 * @author agustin
 */
public class GeneraPDF {
    /**
     * Creamos un pdf básico de prueba. Utilizar idea para generar los partes
     * @param p int con el parte del que vamos a crear el pdf
     * @param ruta Donde vamos a guardar el pdf con el nombre
     * @throws SQLException 
     */
    public void CrearPdfBasico(int p, String ruta) throws SQLException {
        String encabezado = "\n                "+"PARTE DE INCIDENCIAS, \n     "
                + "O INSTALACIÓN DE NUEVO EQUIPO" 
                + "\n" + "\n" + "\n";
        /*colocaremos tambien la fecha de creacion*/
        //java.util.Date date = new java.util.Date();
        Calendar calendario = new GregorianCalendar();
        int hora, minutos, segundos, dia, mes, anyo;
        hora = calendario.get(Calendar.HOUR_OF_DAY);
        minutos = calendario.get(Calendar.MINUTE);
        segundos = calendario.get(Calendar.SECOND);
        
        dia = calendario.get(Calendar.DATE);
        mes = calendario.get(Calendar.MONTH);
        mes+=1;
        anyo = calendario.get(Calendar.YEAR);
        //String date = calendario.toString();
        String date = dia +"/"+ mes +"/"+ anyo +" "+ hora +":"+ minutos +":"+segundos;
        /*Fuente utilizada para formatear el encabezado en este caso sera 
         * arial 12 en negrita*/
        Font fuente = new Font(Font.getFamily("ARIAL"), 12, Font.BOLD);
        /*Definimos un texto que se incluira antes de la tabla*/
        String Fecha = "Fecha: ";
        /*Tambien haremos una tabla a partir de un par de arreglos en otro 
         * caso podria haber sido un resultset de una base de datos*/
        String usuario = Supervisor.usuarioData(p);
        String parte = Supervisor.parteData(p);
        String aparato = Supervisor.aparatoData(p);
        String incidencia = Supervisor.incidenciaData(p);
        
        String[] columna1 = {usuario, parte, aparato, incidencia};        
        try {
            /*Ahora almacenaremos la imagen que ira en la parte superior y la alineamos a la izquierda*/
            String curDir = System.getProperty("user.dir");
            curDir += "/src/propiedades\\";
            Image imagen = Image.getInstance((curDir + "masterlogo.png"));
            imagen.setAlignment(Image.LEFT | Image.TEXTWRAP);
            /*Ahora que ya tenemos el contenido del documento empezaremos a estructurarlo*/

            /*Primero pasaremos nuestras cadenas a elementos de iText*/
            /*definimos una frase que sera el string encabezado y le aplicamos la fuente*/
            Paragraph linea = new Paragraph(encabezado, fuente);
            /*Definimos un parrafo*/
            Phrase para = new Phrase(Fecha);
            /*Pasamos la fecha a un String y la agregamos a un parrafo*/
            Paragraph fecha = new Paragraph(String.valueOf(date) + "\n" + "\n");
            /*Ahora definimos la tabla donde el arguemento recibido indica 
             * el numero de columnas y la propiedad setWidthPercentage 
             * permite indicarle que ocupe todo el ancho de la pagina*/
            PdfPTable tabla = new PdfPTable(1);
            tabla.setWidthPercentage(100);
            /*Ahora que ya tenemos todos los elementos es hora de agregarlos 
             * al documento, para ello primeramente definimos un docuemnto 
             * e indicando el tamaño*/
            Document documento = new Document(PageSize.A4);
            /*Definimos el nombre del archivo de salida con extension .PDF*/
            String file = ruta+".pdf"; 
            /*a traves del siguiente metodo (
             * getInstance)y un flujo de salida del paquete .io asociamos 
             * el documento de iText con el archivo de java*/
            PdfWriter.getInstance(documento, new FileOutputStream(file));
            /*Definimos las celdas que seran los encabezados de la tabla*/
            PdfPCell celda1 = new PdfPCell(new Paragraph("Parte: "+p, FontFactory.getFont("arial", 10, Font.BOLD, BaseColor.RED)));
            /*Abrimos el documento y agregamos los elementos en el orden que deben aparecer*/
            documento.open();
            documento.add(imagen);
            documento.add(linea);
            documento.add(para);
            documento.add(fecha);
            tabla.addCell(celda1);
            /*Ahora a traves de un for insertaremos el contenido del 
             * arreglo en la tabla*/
            for (int i = 0; i < columna1.length; i++) {
                tabla.addCell(columna1[i]);
            }
            documento.add(tabla);
            /*Cerramos el documento*/
            documento.close();

        } catch (Exception e) {
            System.out.println(e.getMessage());

        } finally {
        }
    }
}
